// 强类型语言定义变量：类型 变量名 = 变量值  int num = 1
// TS 中，定义方式： let 变量名:类型 = 变量值

let isTrue: boolean = true // 定义了一个布尔类型的变量
let str: string = "这是一个TS的字符串" // 定义了一个字符串类型的变量
let num: number = 1 // 定义了一个数字类型的变量
let nullData: null = null // 定义了一个空类型的变量
let undefinedData: undefined = undefined // 定义了一个空类型的变量

isTrue = false // 对的
// isTrue = 123 // 错的 不能将类型“number”分配给类型“boolean”

// 定义数组
let arr: number[] = [1, 2, 3, 4]
let strs: Array<string> = ['a', 'b', 'c']
arr.push(5) // ok
// arr.push('a') // error 类型“string”的参数不能赋给类型“number”的参数。

// 定义方法
// let fn = function (a, b) {
//     return a + b
// }

// fn(1,2); // 3

let fn: (a: number, b: number) => number = function (a, b) {
    return a + b
}

fn(1,2); // 3
// fn(1,"2") // 类型“string”的参数不能赋给类型“number”的参数

let fn2: (a:string) => void = function (a) {
    
}

fn2("hello");